package ch03
{
	import ch03.com.friendsofed.isometric.DrawnIsoBox;
	import ch03.com.friendsofed.isometric.GraphicTile;
	import ch03.com.friendsofed.isometric.IsoWorld;
	import ch03.com.friendsofed.isometric.MapLoader;

	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;

	/**
	 * 等角地图
	 * 
	 * 一个需要注意的地方是定义tile 的属性graphicSymbol：
	   # 0 type:GraphicTile graphicClass:MapTest_Tile01 xoffset:20 yoffset:
	   10 walkable:true
	   这里设置的类型是MapTest_Tile01，而在测试代码中，却写的是这样：
	   [Embed(source="tile_01.png")]
	   private var Tile01:Class;
	   可能你会认为定义的时候应该写成 graphicClass:Tile01。而实际上，Tile01 在 MapTest 内
	   是一个private（私有）属性，我们无法在MapLoader 内使用。但对于嵌入的元素，真正的类
	   名格式是"类名_属性名"，所以定义时用的是"MapTest_Tile01"。
	 */
	[SWF(backgroundColor=0xffffff)]
	public class MapTest extends Sprite
	{
		private var _world:IsoWorld;
		private var _floor:IsoWorld;
		private var mapLoader:MapLoader;

		[Embed(source="../../assets/tile_01.png")]
		private var Tile01:Class;

		[Embed(source="../../assets/tile_02.png")]
		private var Tile02:Class;

		public function MapTest()
		{
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;

			mapLoader = new MapLoader();
			mapLoader.addEventListener(Event.COMPLETE, onMapComplete);
			mapLoader.loadMap("../assets/map.txt");
		}

		private function onMapComplete(event:Event):void
		{
			_world = mapLoader.makeWorld(20);
			_world.x = stage.stageWidth / 2;
			_world.y = 100;
			addChild(_world);
		}
	}
}